package org.resort.dao;

import org.apache.ibatis.annotations.Param;
import org.resort.entity.Privilege;
import org.resort.entity.RolePrivilege;

import java.util.List;

/**
 * @Author 郭文虎
 */
public interface RolePrivilegeDao extends CommonDao<RolePrivilege> {
    /**
     * 根据角色获取角色权限信息
     *
     * @param roleId 角色编号
     * @return 角色权限信息
     */
    List<RolePrivilege> getEntityByRoleId(@Param("roleId") int roleId);

    /**
     * 根据角色编号查询关联的权限
     *
     * @param roleId 角色编号
     * @return 关联数据集合
     */
    List<RolePrivilege> getRolePrivilegeByRoleId(@Param("roleId") int roleId);

    /**
     * 移除这名角色当前所拥有的一个权限
     *
     * @param roleId      当前角色编号
     * @param privilegeId 将要移除的权限编号
     * @return 受影响行数
     */
    int removePrivilege(@Param("roleId") int roleId, @Param("privilegeId") int privilegeId);

    /**
     * 根据角色和权限删除关联表数据
     *
     * @param roleId        角色编号
     * @param privilegeList 权限集合
     * @return 受影响行数
     */
    int delPartRolePrivilegeByRoleIdAndPrivilegeList(@Param("roleId") int roleId, @Param("privilegeList") List<Privilege> privilegeList);

    /**
     * 添加RolePrivilege数据
     *
     * @param roleId      角色编号
     * @param privilegeId 权限编号
     * @return 受影响行数
     */
    int addOneRolePrivilegeByRoleIdAndPrivilegeId(@Param("roleId") int roleId, @Param("privilegeId") int privilegeId);
}
